/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.beansjsf.administracao;

import br.com.saber.certificacao.beansjsf.semescopo.FluxoExibicaoMaster;
import br.com.saber.certificacao.utils.UtilMetodos;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author gbvbahia
 */
@ManagedBean(name = "fluxoExibicaoAmdnistracao")
@ViewScoped
public class FluxoExibicao extends FluxoExibicaoMaster {

    private boolean exibirCadastroUsuario;
    private boolean exibirProfessorCertificacao;
    private boolean exibirProfessorVersao;

    private enum PaginaFluxo {

        CADASTRO_USUARIO, PROFESSOR_CERTIFICACAO, PROFESSOR_VERSAO;
    }

    /** Creates a new instance of fluxoExibicao */
    public FluxoExibicao() {
    }

    @PostConstruct
    @Override
    public void init() {
        metodoExibirCadastroUsuario();
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Amdnistracao:(init()) chamado...");
    }

    @PreDestroy
    @Override
    public void end() {
        Logger.getLogger(FluxoExibicao.class.getName()).log(Level.FINEST, "FluxoExibicao Amdnistracao: (end()) chamado...");
    }

    public void metodoExibirCadastroUsuario() {
        alterarTela(PaginaFluxo.CADASTRO_USUARIO);
    }

    public void metodoExibirProfessorCertificacao() {
        alterarTela(PaginaFluxo.PROFESSOR_CERTIFICACAO);
    }

    public void metodoExibirProfessorVersao() {
        alterarTela(PaginaFluxo.PROFESSOR_VERSAO);
    }
    
    private void alterarTela(PaginaFluxo paginaLogin) {
        exibirCadastroUsuario = (PaginaFluxo.CADASTRO_USUARIO.equals(paginaLogin));
        exibirProfessorCertificacao = (PaginaFluxo.PROFESSOR_CERTIFICACAO.equals(paginaLogin));
        exibirProfessorVersao = (PaginaFluxo.PROFESSOR_VERSAO.equals(paginaLogin));
        definirAtributos(paginaLogin);
    }

    private void definirAtributos(PaginaFluxo paginaLogin) {
        FacesContext fc = FacesContext.getCurrentInstance();
        switch (paginaLogin) {
            case CADASTRO_USUARIO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelCadastroUsuario", fc);
                this.imgURLNormal = "users_48.png";
                break;
            case PROFESSOR_CERTIFICACAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelADMProfessor", fc);
                this.imgURLNormal = "prof_cert_48.png";
                break;
                case PROFESSOR_VERSAO:
                this.tituloRichPanel = UtilMetodos.getResourceBundle("richpanelADM2Professor", fc);
                this.imgURLNormal = "prof_ver_48.png";
                break;
            default:
                throw new AssertionError("Não foi definido case para a enum: " + paginaLogin.toString());
        }
    }

    //=========================
    //Getters AND Setters
    //=========================
    public boolean isExibirCadastroUsuario() {
        return exibirCadastroUsuario;
    }

    public void setExibirCadastroUsuario(boolean exibirCadastroUsuario) {
        this.exibirCadastroUsuario = exibirCadastroUsuario;
    }

    public boolean isExibirProfessorCertificacao() {
        return exibirProfessorCertificacao;
    }

    public void setExibirProfessorCertificacao(boolean exibirProfessorCertificacao) {
        this.exibirProfessorCertificacao = exibirProfessorCertificacao;
    }

    public boolean isExibirProfessorVersao() {
        return exibirProfessorVersao;
    }

    public void setExibirProfessorVersao(boolean exibirProfessorVersao) {
        this.exibirProfessorVersao = exibirProfessorVersao;
    }
}
